//配置一些，缓存服务的接口，一些必须提供的，对外暴露的方法

export enum StorageScope {
  GLOBAL, //全局调用的缓存，比如，token，公钥这种
  WORKSPACE, //临时保存的缓存，就在某个服务内用，服务结束了就要清除掉的
};

export interface InterfaceStorageService {
  readonly _servicebrand: undefined;

  //专门获取字符串值，设置默认的一个，当返回错误的时候的默认值，让程序不会因为没有结果就卡住
  get(key: string, scope: StorageScope, fallbackValue: string): string;
  //这个默认错误的返回值可以不设置，就不保证返回值一定是规定的值
  get(key: string, scope: StorageScope, fallbackValue?: string): string | undefined;

  getBoolean(key: string, scope: StorageScope, fallbackValue: boolean): boolean;
  getBoolean(key: string, scope: StorageScope, fallbackValue?: boolean): boolean | undefined;

  store(key: string, value: string | boolean | number | undefined | null, scope: StorageScope): void;

  remove(key: string, scope: StorageScope): void;

  logStorage(): void;
}